Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

342
Vistas
Variable global de Kotlin que se muestra como cero "0"

Soy un completo principiante y comencé a aprender Kotlin a través de tutoriales de YouTube y búsquedas específicas en Google. Cuando estaba siguiendo un tutorial, creó tres variables dentro de la clase MainActivity como las siguientes

 class MainActivity : AppCompatActivity() { var firstName= "David" var secondName= "Tal" var age = 20 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) }

Luego, usa las variables creadas en una función privada como esta:

 private fun nameRating(){ if(firstName == secondName){ Toast.makeText(applicationContext,"10/10", Toast.LENGTH_LONG).show() }else{ Toast.makeText(applicationContext,"5/10", Toast.LENGTH_LONG).show() }}

Seguí el ejemplo y lo recreé en Android Studio, pero se activó la condición if y pensé que era extraño. Después de la depuración, resultó que tanto firstName como secondName son "0" . Pensé que se suponía que las variables eran globales, y es confuso por qué no funciona porque la variable de age es correcta.

Si estoy completamente equivocado sobre cómo debería funcionar esto, agradecería cualquier explicación/aclaración al respecto.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

No te preocupes, Kotlin no está haciendo nada extraño o mágico a tus espaldas en este caso.

La palabra clave var en Kotlin significa que está declarando una variable, pero el alcance de esa variable no es "global". El ámbito es el bloque de código en el que se declara la variable. En su caso, declaró 3 variables en un ámbito de clase, por lo que estas son variables de clase y se puede acceder a ellas desde cualquier lugar dentro de la clase MainActivity . Dado que también son public (de forma predeterminada en Kotlin, las declaraciones son públicas, a menos que especifique un modificador de acceso diferente, como private , protected , etc.), también se puede acceder a estas 3 variables desde fuera de la clase (o desde una subclase), como siempre que el código de llamada tenga una referencia a una instancia de esta clase. Esto funciona igual en Java, si algo es público, se aplican las mismas reglas de acceso.

Dado que estas son variables (su valor puede cambiar), también significa que cualquier código que tenga acceso a ellas también puede cambiar sus valores. Por lo tanto, es probable que el comportamiento "extraño" que está experimentando se deba a alguna otra parte del código que establece firstName y secondName en "0" antes de que se llame a su función nameRating() , y es por eso que firstName y secondName son iguales y la condición if se evalúa a la true

En Android Studio, puede hacer clic derecho en una de sus variables y seleccionar "Buscar usos". Aparecerán los resultados de la búsqueda y allí verá partes del código donde otro código podría estar cambiando los valores de sus variables. Con suerte, eso arrojará algo de luz sobre este comportamiento que está viendo.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda